#ifndef STACK_INCLUDED
#define STACK_INCLUDED

// typedef struct Stack_T *Stack_T;

// extern Stack_T Stack_new(void);
// extern int Stack_empty(Stack_T stk);
// extern void Stack_push(Stack_T stk, void *x);
// extern void *Stack_pop(Stack_T stk);
// extern void Stack_free(Stack_T *stk);

#define T Stack_T
typedef struct T *T;

extern T Stack_new(void);
extern int Stack_empty(T stk);
extern void Stack_push(T stk, void *x);
extern void *Stack_pop(T stk);
extern void Stack_free(T *stk);

// 用来将前面定义的宏标识符取消定义 
#undef T
#endif